로딩 중이에요... 🐣
[코담]
웹개발·실전 프로젝트·AI까지, 파이썬·장고의 모든것을 담아낸 강의와 개발 노트
13 피드 페이지 데이터 분석 및 DRF 사용 이유 | ✅ 편저: 코담 운영자
13강 - 피드 페이지 데이터 분석 및 DRF 사용 이유
페이지 데이터 분석 / DRF 사용 이유✨ 이번 강의 목표
- 피드 페이지에 필요한 데이터 구조를 이해한다
- 데이터 추출 과정에서 발생하는 복잡성을 분석한다
- Django REST Framework(DRF)를 도입해야 하는 이유를 설명한다
1. 개요
이번 강의에서는 Django로 Instagram 피드 페이지를 구성하기 위해 필요한 데이터 분석과 DRF 도입 배경을 설명합니다. 템플릿 기반 또는 프론트엔드 요청(API)을 고려한 설계입니다.
2. 피드 페이지에서 필요한 데이터
피드 페이지에서 사용자에게 보여줘야 할 데이터는 다음과 같습니다:
- 유저 프로필 이미지
- 유저 이름
- 포스트 이미지
- 포스트 내용 (캡션)
- 댓글 목록
이 데이터들은 Django의 뷰 로직 또는 DRF의 API 응답을 통해 템플릿 혹은 클라이언트에게 전달됩니다.
3. 필요한 데이터 모델
Instagram의 피드를 구성하기 위해 필요한 기본 모델은 다음과 같습니다:
- User 모델: 유저 이름, 프로필 사진 등 계정 정보 보관
- Post 모델: 이미지, 캡션, 작성자 등을 포함한 게시물 정보
- Comment 모델: 각 게시글에 달린 댓글 정보
→ 이 3개의 모델은 서로 ForeignKey, related_name 등을 통해 연결됩니다.
4. 데이터 추출의 어려움
❗ 문제 상황
단순한 Django ORM 쿼리로는 다음과 같은 이슈가 있습니다:
- 하나의 포스트에 여러 댓글이 있으면 JOIN 시 포스트 데이터가 중복 반복됨
- 여러 모델 조인 시 쿼리 복잡도 증가, 성능 저하 발생 가능
- 뷰에서 데이터를 수작업으로 JSON 형식으로 정리하려면 로직이 매우 복잡해짐
📌 예시
{
"author": "testuser",
"profile_image": "/media/users/test.png",
"caption": "오늘 날씨 최고!",
"image": "/media/posts/img01.jpg",
"comments": [
{ "user": "철수", "content": "좋네요!" },
{ "user": "영희", "content": "진짜예요~" }
]
}
→ 이 구조를 단순 ORM으로 만들기엔 까다롭고 반복 코드가 많아짐
5. Django REST Framework(DRF) 사용 이유
✅ DRF란?
Django에서 RESTful API를 쉽게 구축할 수 있도록 지원하는 프레임워크로, 아래 기능들을 제공합니다:
Serializer
: 모델 데이터를 JSON 구조로 자동 변환ViewSet
: CRUD API를 손쉽게 구성Response
: JSON 응답 객체 생성
✅ DRF를 사용해야 하는 이유
문제 | DRF 도입 시 장점 |
---|---|
여러 모델 데이터 조합 어려움 | Serializer를 중첩 구조로 깔끔하게 정의 가능 |
JSON 구조 수동 정리 어려움 | 자동 직렬화로 코드 단순화 |
GET 요청 응답 구조 구현 복잡 | ViewSet + Serializer로 구현 간결화 |
✅ 예시 코드
class PostSerializer(serializers.ModelSerializer):
comments = CommentSerializer(many=True)
class Meta:
model = Post
fields = ['author', 'caption', 'image', 'comments']
→ 이렇게 하면 하나의 Post 안에 댓글 리스트도 중첩 구조로 표현 가능
✅ 정리
- 피드 화면은 User, Post, Comment 데이터를 모두 활용해야 함
- 단순 join/쿼리셋만으로는 JSON 구조를 깔끔히 만들기 어려움
- DRF를 사용하면 중첩된 관계를 자연스럽고 쉽게 표현 가능함
- 특히 프론트엔드 연동이나 API 설계에서 DRF는 거의 필수 도구
👉 다음 강의에서는 DRF를 활용해 실제 피드 API와 직렬화 구조를 구현합니다.